草庐IT

Java Generics - 类本身的子类?

全部标签

c++ - 我避免 dynamic_cast<> 的方法是否比 dynamic_cast<> 本身更快?

我正在回答question几分钟前,它向我提出了另一个问题:在我的一个项目中,我做了一些网络消息解析。消息采用以下形式:[1bytemessagetype][2bytespayloadlength][xbytespayload]有效载荷的格式和内容由消息类型决定。我有一个基于公共(public)类的类层次结构Message.为了实例化我的消息,我有一个返回Message*的静态解析方法取决于消息类型字节。像这样的东西:Message*parse(constchar*frame){//Thisissamplecode,inreallifeIobviouslycheckthatthebuf

C++ 为什么我不能将基类分配给子类?

我有这样的代码:classBase{public:voidoperator=(constBase&base_){}};classChild:publicBase{public:};voidfunc(){constBasebase;Childchild;child=base;}我的问题是:既然Child派生自Base(因此它应该继承Base的operator=),为什么当语句出现时child=base;被执行,我得到这样的编译器错误:>.\main.cpp(78):errorC2679:binary'=':nooperatorfoundwhichtakesaright-handopera

c++ - 无法从 QQmlPropertyMap 的子类中的 QML 调用插槽或 Q_INVOKABLE

我正在尝试测试QQmlPropertyMap类。如果我可以将它子类化,它似乎可以很好地满足我的需求。文档here甚至给出了一些关于如何对其进行子类化的基本说明。所述文档还指出此类派生自QObject。为了它的值(value),我在带有QtQuick2.0的Qt5.0.0上使用QtCreator2.6.1。我的main.qml:importQtQuick2.0Rectangle{width:360height:360Text{text:owner.fieldanchors.centerIn:parent}MouseArea{anchors.fill:parentonClicked:{ow

c++ - 具有特定于子类的模板化参数类型的 Qt SIGNAL 架构

我正在使用Qt开发科学数据采集应用程序。由于我不是Qt的专家,我希望社区就以下问题提供一些架构建议:该应用程序支持多个硬件采集接口(interface),但我想在这些接口(interface)之上提供一个通用API。每个接口(interface)都有一个样本数据类型和一个数据单位。所以我将每个设备的样本vector表示为std::vectorBoost.Units数量(即std::vector>)。我想使用多播样式架构,其中每个数据源将新接收的数据广播给1个或多个相关方。Qt的Signal/Slot机制显然适合这种风格。所以,我希望每个数据源都发出一个信号,例如typedefstd::

c++ - 有没有办法不继承子类中函数的 "virtualness"?

在C++中是否可以让一个类覆盖一个虚函数,但只有在通过父类(superclass)调用该函数时才具有虚拟分派(dispatch)(即,当它被静态类型为子类的东西调用时不存在)?我知道这不会发生,但有什么方法可以接近吗?想要这样做的原因是我有两个类都公开了一个flush()函数。在我的程序中的绝大多数时间,我直接在我知道类型的子类对象上调用flush(),因此我不需要虚拟分派(dispatch)。但是我想在混合中添加一个父类(superclass),这样我就可以很少将对任一类的实例的引用传递给doSomethingThenFlush()函数,该函数将调用flush()实际上。我知道我可以

c++ - 在 C++ 中,检查一个基类的两个实例是否属于同一个子类

下面的代码解释了这个问题。填写same_sub_class检测是否指向虚拟基类A的两个指针实际上是相同的具体类。structA{...}:structB:publicA{...}:structC:publicA{...}boolsame_sub_class(A*a1,A*a2){//Fillthisintoreturntrueifa1anda2are//ofthesameconcreteclass}编辑:当我查看我的应用程序时,我需要一些与上面略有不同的东西。我需要能够按type_id对实例进行分组。仅供引用。我有一个迷你符号代数系统,因此要进行操作,有时了解类类型对于排序和重新排列表

c++ - 临时数组的元素本身不是右值吗?

usingintArray=int[];int(&a)[4]=intArray{1,2,3,4};这是不允许的,因为将非常量左值引用绑定(bind)到临时(右值)是非法的。g++4.9.1和clang3.4.2都报错了;当a时编译正常是const合格intconst(&a)[4]=intArray{1,2,3,4};但是,当我这样做的时候int&x=intArray{1,2,3,4}[1];两个编译器都能很好地编译它,没有错误。为此挖掘标准(草案N3337),§5.2.1Subscripting说1Apostfixexpressionfollowedbyanexpressioninsq

c++ - 捕获并修改 std::exception 和子类,重新抛出相同类型

我想这样做:try{//...}catch(conststd::exception&ex){//shouldpreserveex'runtimetypethrowtype_in_question(std::string("Custommessage:")+ex.what());}是否有可能无需为每个子类型编写单独的处理程序? 最佳答案 您正在寻找的可能是这样的:try{//...}templatecatch(Excconst&ex){throwExc(std::string("Custommessage:")+ex.what());

C++:将父类转换为子类

我是C++的新手,这是我遇到的问题:我有两个类,Client和Host。加载所有内容后,您可以选择按下两个按钮,如果按下按钮1,则加载Client,如果按下按钮2,则加载Host。现在Client和Host都是相当大的类,我不想把它们都放到内存中。所以我的想法是创建一个Base类,然后Client和Host都应该扩展基类,然后我唯一要做的就是这样做是这样的:Baseconnection;//Ifbutton1ispressed:connection=Client();//Ifbutton2ispressed:connection=Host();好吧,这听起来好得令人难以置信,而且当我尝

c++ - 为什么不调用子类方法?

我在子类化和使用方法方面遇到问题。我创建了类B的实例并将其存储为指向A的指针。但是当我使用指针调用重载方法时,输出是“A”而不是“B”。为什么?这适用于其他语言,我做错了什么?#includeusingnamespacestd;classA{public:voidf(){coutf();return0;} 最佳答案 f()需要在基类A中声明为virtual:classA{public:virtualvoidf(){cout您已经使用过的其他语言可能默认使用虚拟方法,但C++不会(不要为您不使用的东西付费:虚拟方法在调用它们时会产生间